/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import generica.Generica;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 *
 * @author calandreli
 */
@Entity
@Table(name = "Fisica")
@PrimaryKeyJoinColumn(name = "id_Pessoa")
@SequenceGenerator(name = "fisica_seq", sequenceName = "id_Fisica", allocationSize = 1)
public class Fisica extends Pessoa implements Generica {

    //@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "fisica_seq")
    @Column(name = "id_Fisica")
    private int id_Fisica;
    @Column(name = "cpf")
    private String cpf;
    @Column(name = "nome_Banco")
    private String nome_Banco;
    @Column(name = "nome_Agencia")
    private String nome_Agencia;
    @Column(name = "num_Banco")
    private int num_Banco;
    @Column(name = "num_Agencia")
    private int num_Agencia;
    @Column(name = "num_Conta")
    private int num_Conta;

    public int getNum_Agencia() {
        return num_Agencia;
    }

    public void setNum_Agencia(int num_Agencia) {
        this.num_Agencia = num_Agencia;
    }

    public int getId_Fisica() {
        return id_Fisica;
    }

    public void setId_Fisica(int id_Fisica) {
        this.id_Fisica = id_Fisica;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getNome_Banco() {
        return nome_Banco;
    }

    public void setNome_Banco(String nome_Banco) {
        this.nome_Banco = nome_Banco;
    }

    public String getNome_Agencia() {
        return nome_Agencia;
    }

    public void setNome_Agencia(String nome_Agencia) {
        this.nome_Agencia = nome_Agencia;
    }

    public int getNum_Banco() {
        return num_Banco;
    }

    public void setNum_Banco(int num_Banco) {
        this.num_Banco = num_Banco;
    }

    public int getNum_Conta() {
        return num_Conta;
    }

    public void setNum_Conta(int num_Conta) {
        this.num_Conta = num_Conta;
    }

    public static boolean validarCPF(String strCpf) {

        int d1, d2;
        int digito1, digito2, resto;
        int digitoCPF;
        String nDigResult;

        d1 = d2 = 0;
        digito1 = digito2 = resto = 0;

        for (int nCount = 1; nCount < strCpf.length() - 1; nCount++) {
            digitoCPF = Integer.valueOf(strCpf.substring(nCount - 1, nCount)).intValue();
            d1 = d1 + (11 - nCount) * digitoCPF;
            d2 = d2 + (12 - nCount) * digitoCPF;
        };

        resto = (d1 % 11);

        if (resto < 2) {
            digito1 = 0;
        } else {
            digito1 = 11 - resto;
        }

        d2 += 2 * digito1;
        resto = (d2 % 11);

        if (resto < 2) {
            digito2 = 0;
        } else {
            digito2 = 11 - resto;
        }

        String nDigVerific = strCpf.substring(strCpf.length() - 2, strCpf.length());
        nDigResult = String.valueOf(digito1) + String.valueOf(digito2);

        return nDigVerific.equals(nDigResult);
    }

    @Override
    public Serializable getIdentificador() {
        return this.id_Fisica;
    }

}
